﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PhongMachTu.OConnection;
using PhongMachTu.OModel;
using System.Collections;

namespace PhongMachTu.OForm
{
    public partial class FormSearchPatient : Form
    {
        private ArrayList patients;
        private int closeID;

        public int CloseID
        {
            get { return closeID; }
            set { closeID = value; }
        }

        public ArrayList Patients
        {
            //get { return patients; }
            set { patients = value; }
        }
        private int temp;

        public FormSearchPatient()
        {
            InitializeComponent();
        }

        private void btnCreatePres_Click(object sender, EventArgs e)
        {
            if (OSession.isLoggedIn())
            {
                bool a = DataManipulate.checkPatientInDay(temp);
                if (a)
                {
                    MessageBox.Show("Bệnh nhân đã có trong danh sách và đang chờ khám hoặc chờ cập nhật thông tin. Không thể thêm vào được.");
                }
                else if (double.Parse(DataManipulate.getNumOfPa().ToString()) == DataManipulate.getSettingMaxPatient()._value)
                {
                    MessageBox.Show("Đã quá số bệnh nhân tối đa trong ngày. Không thể thêm bệnh nhân!");
                }
                else
                {
                    int b = DataManipulate.saveVisit(temp);
                    if (b == 0)
                    {
                        MessageBox.Show("Xảy ra lổi, không thể thêm vào danh sách. Vui lòng thử lại!");
                    }
                    else
                    {
                        refreshLV(0);
                        FormManager.prescriptionForm.loadData();
                    }
                }
            }
            else
            {
                FormManager.paInDayForm.Hide();
                FormManager.loginForm.Show();
                MessageBox.Show("Quá thời gian chờ cho phép, vui lòng đăng nhập lại");
            }
        }

        private void btnSearch_Click(object sender, EventArgs e)
        {
            if (OSession.isLoggedIn())
            {
                lvPatient.Items.Clear();
                patients = DataManipulate.searchPatient(txtKeyWord.Text);
                refreshLV(0);
            }
            else
            {
                FormManager.searchForm.Hide();
                FormManager.loginForm.Show();
                MessageBox.Show("Quá thời gian chờ cho phép, vui lòng đăng nhập lại");
            }
        }

        private void lvPatient_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lvPatient.SelectedItems.Count == 0) return;
            ListViewItem lvItem = lvPatient.SelectedItems[0];
            Patient pa = (Patient)lvItem.Tag;
            temp = pa.PatienId;
        }

        private void FormSearchPatient_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true;
            FormManager.searchForm.Hide();
            if (closeID == 0)
            {
                FormManager.mainForm.Show();
            }
            else if (closeID == 1)
            {
                FormManager.paInDayForm.Patients = DataManipulate.getPatientInDay();
                FormManager.paInDayForm.loadData();
                FormManager.paInDayForm.Show();
            }
        }

        public void refreshLV(int t)
        {
            if (t == 0)
            {
                lvPatient.Items.Clear();
                if (patients != null)
                {
                    for (int i = 0; i < patients.Count; i++)
                    {
                        int stt = i + 1;
                        Patient pa = (Patient)patients[i];
                        int id = pa.PatienId;
                        String fullname = pa.Fullname;
                        bool g = pa.Sex;
                        String gender = "";
                        if (g)
                        {
                            gender = "Nam";
                        }
                        else
                        {
                            gender = "Nữ";
                        }
                        int birthyear = int.Parse(pa.Dob.ToString("yyyy"));
                        String address = pa.Address;
                        String status = "";
                        bool a = DataManipulate.checkPatientInDay(pa.PatienId);
                        if (a)
                        {
                            status = "Không thể thêm vào danh sách";
                        }
                        else
                        {
                            status = "Có thể thêm vào danh sách";
                        }

                        ListViewItem item = new ListViewItem(stt.ToString());
                        item.SubItems.Add(id.ToString());
                        item.SubItems.Add(fullname);
                        item.SubItems.Add(gender);
                        item.SubItems.Add(birthyear.ToString());
                        item.SubItems.Add(address);
                        item.SubItems.Add(status);
                        item.Tag = pa;
                        lvPatient.Items.Add(item);
                    }
                }
                else
                {
                    MessageBox.Show("Không tìm thấy bệnh nhân này !", "Thông báo");
                }
            }
            else
            {
                lvPatient.Items.Clear();
            }
        }
    }
}
